nginxでLua使ってみる話私的まとめ


概要

nginx lua使ってあそぶ。

といいつつ、luaでのコンテキストをWebSocket越えさせる目的がある。


死霊

Using ngx_lua / lua-nginx-module in pixiv

http://www.slideshare.net/harukayon/ngx-lua-public


lua-nginx-module を使いこなす

http://qiita.com/kz_takatsu/items/e94805a8e3cc285f9b33


Nginx で HTTP API 化

http://qiita.com/Hexa/items/cb762d70a741bcc57498


nginx + lua-nginx-module の環境構築

http://qiita.com/futoase/items/4185432667569b6b3f35


OpenResty (nginx + lua) 逆引きメモ

http://qiita.com/voluntas/items/e86f5fe5b8044c311583



lua_nginx module

こんなの。

https://github.com/openresty/lua-nginx-module



ビルド

欲しいのはluaが実行できてあとあとオレオレエンジンとしてコンパイル可能にするコマンドラインツールとしてのnginxなので、いろいろDLして、そろえる。

依存を最小限にするためにRestyそれ自体の使用はしないことを考えている。

あとであっさり言ってること変わるかもしれない。

というわけでコレクション。


nginx 1.7.10

http://nginx.org/download


LuaJIT-2.1

cloneして2.1ブランチに切り替えて動かす。

git clone http://luajit.org/git/luajit-2.0.git

んだけど、makeしてもlibとか作られないのか、どうすりゃ良いんだろう。

とりあえず2.0.3をbrewで入れて、そこに入っているlibを使う。nginxの設定ファイルは下記


lua-nginx-module

https://github.com/openresty/lua-nginx-module/releases/tag/v0.9.15

ngx_devel_kit

https://github.com/simpl/ngx_devel_kit/releases/tag/v0.2.19


パラメータ設定してnginxをビルド

luajit 2.1のlibはあとで作る。


build.sh

export LUAJIT_LIB=/usr/local/Cellar/luajit/2.0.3_1/lib

export LUAJIT_INC=/usr/local/Cellar/luajit/2.0.3_1/include/luajit-2.0


NGX_DEVEL_KIT="ngx_devel_kit-0.2.19"

LUA_NGX_MOD="lua-nginx-module-0.9.15"


# Here we assume Nginx is to be installed under /opt/nginx/.

./configure --prefix=/Users/illusionismine/Desktop/nginx-luajit/b \

--with-ld-opt='-Wl,-rpath,$LUAJIT_LIB' \

--add-module=$NGX_DEVEL_KIT \

--add-module=$LUA_NGX_MOD


make -j2

make install


で、実行すると、

sh build.sh


無事sbin/nginx が出来た。

実行してみると、Welcome画面でたのでOK。



実行とテスト

OpenRestyのCLIのやつでサクサクに、、、と思ったのだけれど、

自分の用途だとSublimeでのコード編集/ビルド時にcurlぶったたくほうが楽だったので、次のスクリプトを書いて終わった。


コード保存したりビルドするたびにcurlが走るだけ。状態持ってないからまだ後悔してない。


luaFire.sublime-build

{

"shell_cmd": "curl http://localhost/lua-test"

}



実行結果はコードの下の方に出る

スクリーンショット 2015-03-01 13.02.19.png

お楽しみはここからだ

luaコンテキストを送信し合うのに興味がある。